/**
 * 第一种：
 * configure方法为配置log4js对象，内部有levels、appenders、categories三个属性
 * levels:
 *         配置日志的输出级别,共ALL<TRACE<DEBUG<INFO<WARN<ERROR<FATAL<MARK<OFF八个级别,default level is OFF
 *         只有大于等于日志配置级别的信息才能输出出来，可以通过category来有效的控制日志输出级别
 * appenders:
 *         配置文件的输出源，一般日志输出type共有console、file、dateFile三种
 *         console:普通的控制台输出
 *         file:输出到文件内，以文件名-文件大小-备份文件个数的形式rolling生成文件
 *         dateFile:输出到文件内，以pattern属性的时间格式，以时间的生成文件
 * replaceConsole:
 *         是否替换控制台输出，当代码出现console.log，表示以日志type=console的形式输出
 *                 
 */
const log4js = require('log4js');
const path = require('path');

log4js.configure({
  appenders: {
    consoles: {
      "type": "console"
    },
    error: {
      type: 'dateFile',  // 日志类型
      category: 'errLogger',  // 日志名称
      filename: path.join(__dirname, '../logs/errors/'), // 日志输出位置，文件夹/文件不存在则自动创建
      pattern: "yyyy-MM-dd.log",
      alwaysIncludePattern: true,
      maxLogSize: 104800, // 日志最大存储空间
      backups: 3  // 当文件内容超出文件存储时，备份文件的数量
    },
    response: {
      type: "dateFile",
      category: "resLogger",
      filename: path.join(__dirname, '../logs/response/'),
      pattern: "yyyy-MM-dd.log",
      alwaysIncludePattern: true,
      maxLogSize: 104800,
      backups: 3
    }
  },
  categories: {
    default: { appenders: ['consoles'], level: 'all' },
    error: { appenders: ['error'], level: 'error' },
    response: { appenders: ['response'], level: 'info' }
  },
  replaceConsole: true
});

module.exports = log4js;